Solid modeling is a term that refers to a set of techniques that may be used to create and store computer based representations of physical objects. A number of techniques have evolved over the years for providing computer-based representations of three-dimensional parts. One of these techniques is Boundary Representation (B-rep).
A B-rep model of a mechanical part consists of a set of “faces,” “edges,” and “vertices,” which are connected together to form a topological structure of the part. By using such a representation, it is possible to evaluate many properties of the part from its computer model. These include the mass, the volume, the moments of inertia and products of inertia and other geometric information like face adjacencies, outer loop and inner loop of faces, face data, edge data, and vertex data. Additionally, such models enable computer-based analysis of stress and strains in the part under different loading conditions, manufacturability analysis, tool path generation, etc. B-rep modeling is a popular method of representing solid models. Other representations of solid models are also known in the art.
Software based on solid modeling is widely used by engineers to create models of parts that may eventually be manufactured. Software such as SolidWorks (Solidworks Corporation), Pro/Engineer (Parametric Technology), CATIA (Dassault systems), NX (Siemens), Inventor (AutoDesk) are examples of solid modeling software.
Traditionally, work in feature technology has mainly focused in two areas: feature based design and feature recognition. In feature-based design, the basic unit is a feature that is defined as a region of design or manufacturing interest in a part. Most CAD systems provide a suite of standard features such as holes, ribs, extruded/revolved depressions, and protrusions for designing parts. The parts are designed as sequences of these features, and are represented as a design tree (or feature tree). However for many applications, the design tree may not provide the required information directly. For example in manufacturing, protrusions in a feature tree need to be mapped as slots with islands while generating the tool path for machining. Further, the actual feature in the part may not correspond exactly to the feature in the design history due to feature interactions. For example, a blind hole could become a through hole due to the imposition of other features. In such situations, the only approach is to use feature recognition from the part model. In a few situations, one encounters models that do not have any feature information. This could result from modeling in non-feature based systems or from translation of data from one CAD system to another. In such cases, feature recognition is essential to extract the necessary information.
In the area of feature recognition, many techniques have been proposed and implemented. For a comprehensive review of feature recognition techniques, reference is made to Qiang Ji and Michael M. Marefat (Ji et al); “Machine Interpretation of CAD Data for Manufacturing Applications,” ACM Computing Surveys, Vol. 24, No. 3, September 1997.
Several of the techniques described in Ji et al reference the use of graph-based approaches for recognizing features. In the graph-based approach, features are represented using an attributed face-adjacency graph. The graph is constructed by using faces as nodes and edges as arcs. In addition, attributes are added to nodes and arcs representing the topological and geometric characteristics of the corresponding faces and edges.
Feature recognition proceeds by matching the feature graph to an appropriate subgraph of the graph representation of the part. However, a graph-based approach tends to be computationally expensive, especially in the presence of feature interactions, since it involves sub-graph matching problems. The efficiency is hence dependent on the attributes used in the graph that aid in pruning down the search during recognition. Further, many of the approaches proposed so far use feature hints that depend on specific feature types that may not be generally applicable.